from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
import os

# 准备中文文本
text = """
Python 是一种高级编程语言，广泛用于数据分析、机器学习、网络开发和自动化脚本。
Python 语法简洁清晰，拥有丰富的第三方库生态系统，如 NumPy、Pandas、Matplotlib 和 Scikit-learn。
数据科学和人工智能领域大量使用 Python 进行数据处理、可视化和建模。
Python 的易学性和强大功能使其成为初学者和专业开发者的首选语言。
"""


# 方法1：查找并使用系统中文字体
def find_chinese_font():
    # 常见的中文字体路径（Windows）
    font_paths = [
        'C:/Windows/Fonts/simhei.ttf',  # 黑体
        'C:/Windows/Fonts/simsun.ttc',  # 宋体
        'C:/Windows/Fonts/simkai.ttf',  # 楷体
        'C:/Windows/Fonts/simfang.ttf',  # 仿宋
        'C:/Windows/Fonts/msyh.ttc',  # 微软雅黑
        'C:/Windows/Fonts/msyhbd.ttc',  # 微软雅黑粗体
    ]

    # 常见的中文字体路径（Mac）
    font_paths += [
        '/System/Library/Fonts/PingFang.ttc',
        '/Library/Fonts/Arial Unicode.ttf',
    ]

    # 常见的中文字体路径（Linux）
    font_paths += [
        '/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf',
        '/usr/share/fonts/truetype/wqy/wqy-microhei.ttc',
    ]

    for font_path in font_paths:
        if os.path.exists(font_path):
            return font_path

    return None


# 生成中文词云
def create_chinese_wordcloud():
    # 查找可用中文字体
    font_path = find_chinese_font()

    if font_path is None:
        print("未找到系统中文字体，请下载字体文件")
        return

    print(f"使用字体: {font_path}")

    # 创建词云对象，指定中文字体
    wordcloud = WordCloud(
        font_path=font_path,  # 关键：指定中文字体路径
        width=800,
        height=400,
        background_color='white',
        colormap='viridis',
        max_words=100,
    ).generate(text)

    # 显示词云
    plt.figure(figsize=(10, 5))
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis('off')
    plt.title('中文词云图', fontsize=15, pad=20)
    plt.tight_layout()
    plt.show()


create_chinese_wordcloud()# 生成中文词云图
